package com.cs.beneficios.common.entity;

import com.cs.beneficios.business.model.Subprograma;
import com.cs.beneficios.business.model.ValorFlexibleVO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.beneficios.common.util.Atributo;
import com.cs.beneficios.validator.Validaciones;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

import java.util.LinkedList;
import java.util.List;

public class Consultas {
	private Connection conn = null;
	private ConnectionFactory cf;

	public Consultas(ConnectionFactory cf) {
		this.cf = cf;
		try {
			this.conn = this.cf.getConnection();
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}
	}

	// public ResultSet getConsulProg(Long codeuser, Long codeusergroup,String
	// strPgr, String strarea){
	//
	// String strSql = null;
	// ResultSet rs = null;
	// String strPar[] = new String[1];
	//
	// if(strPgr.equalsIgnoreCase("") && strarea.equalsIgnoreCase("")){
	//
	// strSql =
	// " select  upper(pro.nombre) Programa, pro.codigo Codigo, pro.area_codigo Area "+
	// " from tcs_ben_programa pro, paoyer.tcs_usuario usu, "+
	// " paoyer.tcs_grupo_usuario gus "+
	// " where pro.USU_CODIGO = usu.CODIGO "+
	// " AND Fcs_Ben_Val_Vigencia(pro.VIGENCIA, pro.DESDE_VIGENCIA, pro.HASTA_VIGENCIA, sysdate) = 'A' "+
	// " and (gus.CODIGO = 33 or gus.CODIGO = 128) and ("+codeusergroup+" = 33 or "+codeusergroup+" = 128 or usu_codigo = "+codeuser+") ";
	//
	//
	// /* strSql =
	// " SELECT  pgr.nombre Programa, pgr.codigo Codigo, pgr.area_codigo Area"+
	// " FROM TCS_BEN_PROGRAMA pgr "+
	// " WHERE vigencia <> 'I' ";*/
	// try{
	// rs = cf.getRecordsRset(strSql,null,conn);
	// }
	// catch(SQLException e){
	// e.printStackTrace();
	// }
	// return rs;
	// }else{
	// if(strarea.equalsIgnoreCase("")){
	// //try{
	// Validaciones validacion = new Validaciones(cf);
	// boolean existe = validacion.validaprog(strPgr);
	// if(existe){
	//
	// strSql =
	// " SELECT pro.codigo Codigo, UPPER(pro.nombre) Programa, pro.area_codigo Area "+
	// " FROM TCS_BEN_PROGRAMA pro, tcs_ben_area area, paoyer.tcs_usuario usu, "+
	// " paoyer.tcs_grupo_usuario gus "+
	// " WHERE pro.area_codigo = area.codigo and pro.USU_CODIGO = usu.CODIGO "+
	// " AND Fcs_Ben_Val_Vigencia(pro.VIGENCIA, pro.DESDE_VIGENCIA, pro.HASTA_VIGENCIA, "+
	// " SYSDATE) = 'A' AND (gus.CODIGO = 33 or gus.CODIGO = 128) "+
	// " AND ("+codeusergroup+" = 33 OR "+codeusergroup+" = 128 OR usu_codigo = "+codeuser+") AND UPPER(pro.nombre) LIKE UPPER(?) ";
	//
	//
	// /* strSql =
	// " Select  pgr.nombre Programa, pgr.codigo Codigo, pgr.area_codigo Area "+
	// " from TCS_BEN_PROGRAMA pgr, TCS_BEN_AREA area "+
	// " where pgr.area_codigo = area.codigo and pgr.vigencia <> 'I' AND upper(pgr.nombre) like upper(?) ";*/
	//
	// String strprograma = "%"+strPgr+"%";
	// strPar[0] = strprograma;
	// }else{
	// return rs;
	// }
	// //cf.closeConnection(validacion.getConn());
	// /* }catch(SQLException e)
	// {
	// e.printStackTrace();
	// }*/
	// }else{
	//
	// strSql =
	// " SELECT pro.codigo Codigo, UPPER(pro.nombre) Programa, pro.area_codigo Area "+
	// " FROM TCS_BEN_PROGRAMA pro, paoyer.tcs_usuario usu, "+
	// " paoyer.tcs_grupo_usuario gus, TCS_BEN_AREA area "+
	// " WHERE pro.USU_CODIGO = usu.CODIGO  AND pro.AREA_CODIGO = area.CODIGO "+
	// " AND Fcs_Ben_Val_Vigencia(pro.VIGENCIA, pro.DESDE_VIGENCIA, pro.HASTA_VIGENCIA, SYSDATE) = 'A' "+
	// " AND (gus.CODIGO = 33 OR gus.CODIGO = 128) AND ("+codeusergroup+" = 33 OR "+codeusergroup+" = 128 OR usu_codigo = "+codeuser+") AND area.codigo = ? ";
	//
	// /* strSql =
	// " SELECT  pgr.nombre Programa, pgr.codigo Codigo, pgr.area_codigo Area "+
	// " FROM TCS_BEN_PROGRAMA pgr, TCS_BEN_AREA area "+
	// " WHERE pgr.AREA_CODIGO = area.CODIGO AND pgr.vigencia <> 'I' AND area.codigo = ? ";*/
	//
	// strPar[0] = strarea;
	// }
	// }
	// try{
	// rs = cf.getRecordsRset(strSql,strPar,conn);
	// }
	// catch(SQLException e){
	// e.printStackTrace();
	// }
	//
	// return rs;
	//
	// }

	// public ResultSet getConsSubprog(Long codeuser, Long groupuser, String
	// strsub, String strpgr, String strsecretaria)
	// {
	//
	// String strSql = null;
	// ResultSet rs = null;
	// String strPar[] = new String[1];
	//
	// if (strsub.equalsIgnoreCase("") && strpgr.equalsIgnoreCase("") &&
	// strsecretaria.equalsIgnoreCase("")){
	//
	// strSql =
	// " SELECT UPPER(subpro.nombre) Subprograma,  subpro.codigo Codigo "+
	// " FROM TCS_BEN_SUBPROGRAMA subpro, paoyer.tcs_usuario usu, "+
	// " paoyer.tcs_grupo_usuario gus "+
	// " WHERE subpro.USU_CODIGO = usu.CODIGO "+
	// " AND Fcs_Ben_Val_Vigencia(subpro.VIGENCIA, subpro.DESDE_VIGENCIA, subpro.HASTA_VIGENCIA, SYSDATE) = 'A' "+
	// " AND (gus.CODIGO = 33 OR gus.CODIGO = 128) AND ("+groupuser+" = 33 OR "+groupuser+" = 128 OR usu_codigo = "+codeuser+") ";
	//
	// /* strSql = " SELECT subpgr.NOMBRE Subprograma, subpgr.codigo Codigo "+
	// " FROM TCS_BEN_AREA area, TCS_BEN_PROGRAMA pgr, TCS_BEN_SUBPROGRAMA subpgr "+
	// " WHERE area.CODIGO = pgr.AREA_CODIGO AND pgr.CODIGO = subpgr.PRG_CODIGO AND subpgr.vigencia <> 'I' ";
	// */
	//
	// try{
	// rs = cf.getRecordsRset(strSql,null,conn);
	// }
	// catch(SQLException e){
	// e.printStackTrace();
	// }
	// return rs;
	//
	// }else{
	// if (strpgr.equalsIgnoreCase("") && strsecretaria.equalsIgnoreCase("")) {
	// try{
	// Validaciones validacion = new Validaciones(cf);
	// boolean existe = validacion.validasubprg(strsub);
	//
	// if(existe){
	//
	// strSql =
	// " SELECT  UPPER(subpro.nombre) Subprograma, subpro.codigo Codigo "+
	// " FROM TCS_BEN_SUBPROGRAMA subpro, paoyer.tcs_usuario usu, paoyer.tcs_grupo_usuario gus "+
	// " WHERE subpro.USU_CODIGO = usu.CODIGO "+
	// " AND Fcs_Ben_Val_Vigencia(subpro.VIGENCIA, subpro.DESDE_VIGENCIA, subpro.HASTA_VIGENCIA, SYSDATE) = 'A' "+
	// " AND (gus.CODIGO = 33 OR gus.CODIGO = 128)"+
	// " AND ("+groupuser+" = 33 OR "+groupuser+" = 128 OR usu_codigo = "+codeuser+") AND  UPPER(subpro.NOMBRE) LIKE UPPER(?)";
	//
	// /* strSql = " SELECT subpgr.NOMBRE Subprograma, subpgr.codigo Codigo "+
	// " FROM TCS_BEN_AREA area, TCS_BEN_PROGRAMA pgr, TCS_BEN_SUBPROGRAMA subpgr "+
	// " WHERE area.CODIGO = pgr.AREA_CODIGO AND pgr.CODIGO = subpgr.PRG_CODIGO  "+
	// " AND subpgr.vigencia <> 'I' AND  UPPER(subpgr.NOMBRE) like upper(?) ";
	// */
	//
	// String strsubprog = "%"+strsub+"%";
	// strPar[0] = strsubprog;
	// }else{
	// return rs;
	// }
	// cf.closeConnection(validacion.getConn());
	// }catch(SQLException e)
	// {
	// e.printStackTrace();
	// }
	// }else{
	// if (strsub.equalsIgnoreCase("") && strsecretaria.equalsIgnoreCase("")){
	//
	// strSql =
	// " SELECT  UPPER(subpro.nombre) Subprograma, subpro.codigo Codigo "+
	// " FROM TCS_BEN_SUBPROGRAMA subpro, paoyer.tcs_usuario usu, paoyer.tcs_grupo_usuario gus "+
	// " WHERE subpro.USU_CODIGO = usu.CODIGO "+
	// " AND Fcs_Ben_Val_Vigencia(subpro.VIGENCIA, subpro.DESDE_VIGENCIA, subpro.HASTA_VIGENCIA, SYSDATE) = 'A' "+
	// " AND (gus.CODIGO = 33 OR gus.CODIGO = 128) AND ("+groupuser+" = 33 OR "+groupuser+" = 128 OR usu_codigo = "+codeuser+") "+
	// " AND subpro.PRG_CODIGO = ?  ";
	//
	// /*strSql = " SELECT subpgr.NOMBRE Subprograma, subpgr.codigo Codigo "+
	// " FROM TCS_BEN_AREA area, TCS_BEN_PROGRAMA pgr, TCS_BEN_SUBPROGRAMA subpgr "+
	// " WHERE subpgr.PRG_CODIGO = pgr.CODIGO   AND area.CODIGO = pgr.AREA_CODIGO  "+
	// "  AND SUBPGR.vigencia <> 'I' AND pgr.CODIGO = ? "; */
	//
	// strPar[0] = strpgr;
	// }else{
	//
	// strSql = " SELECT subpgr.NOMBRE Subprograma, subpgr.codigo Codigo "+
	// " FROM TCS_BEN_AREA area, TCS_BEN_PROGRAMA pgr, TCS_BEN_SUBPROGRAMA subpgr "+
	// " WHERE subpgr.PRG_CODIGO = pgr.CODIGO  AND pgr.AREA_CODIGO = area.CODIGO AND "+
	// " subpgr.vigencia <> 'I' AND area.CODIGO = ? ";
	//
	// strPar[0] = strsecretaria;
	//
	//
	// }
	// }
	// }
	// try{
	// rs = cf.getRecordsRset(strSql,strPar,conn);
	// }
	// catch(SQLException e){
	// e.printStackTrace();
	// }
	//
	// return rs;
	// }

	public ResultSet getDetPrograma(String strcodigo) {
		String strSql = " SELECT pgr.NOMBRE Nombre, nvl(pgr.OBJETIVO,' ') Objetivo, "
				+ " nvl(pgr.DESCRIPCION,' ') Descripcion, nvl(area.NOMBRE,' ') Area, "
				+ " usu.codigo codusu, usu.NOMBRE Usuario, nvl(pgr.POBLACION_OBJETIVO,' ') Poblacion, "
				+ " nvl(to_char(pgr.desde_vigencia,'yyyy-mm-dd'),'nulo') Desde, "
				+ " nvl(to_char(pgr.hasta_vigencia,'yyyy-mm-dd'),'nulo')  Hasta, nvl(pgr.VIGENCIA,' ') Vigencia "
				+ " FROM TCS_BEN_PROGRAMA pgr, TCS_BEN_AREA area, paoyer.tcs_usuario usu "
				+ " WHERE pgr.AREA_CODIGO = area.CODIGO "
				+ " AND pgr.USU_CODIGO = usu.CODIGO " + " AND pgr.CODIGO = ? ";

		String strPar[] = { strcodigo };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}
		return rs;
	}

	public ResultSet getDetSubpgr(String strsubpgr) {
		String strSql = " SELECT subpgr.nombre subprograma, pgr.NOMBRE programa,area.codigo codsecr, area.NOMBRE secretaria, nvl(subpgr.DESCRIPCION,' ') descripcion, "
				+ " nvl(TO_CHAR(subpgr.DIAS_REUTILIZAR),' ') utilizacion, nvl(subpgr.VALOR_UNITARIO_BENEFICIO,'0') valor, "
				+ " nvl(to_char(subpgr.desde_vigencia,'yyyy-mm-dd'),'nulo') desde, nvl(to_char(subpgr.hasta_vigencia,'yyyy-mm-dd'),'nulo') hasta, "
				+ " subpgr.grupo_familiar grupo, subpgr.validar_contra_estud estudiantes, "
				+ " subpgr.validar_contra_sisben sisben,  subpgr.VIGENCIA vigencia, usu.codigo codadmin, usu.NOMBRE usuario, "
				+ " subpgr.area_codigo subsecretaria,nvl(subpgr.CAMPO_A3,' ') renovar "
				+ " FROM TCS_BEN_SUBPROGRAMA subpgr, TCS_BEN_PROGRAMA pgr, TCS_BEN_AREA area, paoyer.tcs_usuario usu "
				+ " WHERE area.CODIGO = pgr.AREA_CODIGO AND usu.CODIGO = subpgr.USU_CODIGO "
				+ " AND pgr.CODIGO = subpgr.PRG_CODIGO AND subpgr.codigo = ? ";

		String strPar[] = { strsubpgr };
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}
		return rs;
	}

	public ResultSet getDetSede(String strSede) {
		String strSql = " SELECT sede.Nombre nombre, NVL(sede.Descripcion,' ') descripcion,  "
				+ " nvl(sede.tipo,' ') tipo, nvl(sede.caracter,' ') car, "
				+ " vfl_codigo_municipio.CODIGO  Municipio, nvl(sede.Direccion_Descriptiva,' ') dirdescrip, "
				+ " sede.Direccion_Encasillada direncas,nvl(sede.localizacion_cobama,' ')cobama, "
				+ " nvl(to_char(sede.desde_vigencia,'yyyy-mm-dd'),'nulo') desde, "
				+ " nvl(to_char(sede.hasta_vigencia,'yyyy-mm-dd'),'nulo') hasta, sede.vigencia vig "
				+ " FROM TCS_BEN_SEDE sede, paoyer.tcs_valor_flexible vfl_codigo_municipio "
				+ " WHERE sede.VFL_CODIGO_MUNICIPIO = vfl_codigo_municipio.CODIGO AND sede.codigo = ? ";

		String strPar[] = { strSede };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}
		return rs;
	}

	public ResultSet getNomPrograma() {
		String strSql = "select codigo, area_codigo, nombre from tcs_ben_programa "
				+ "where vigencia <> 'I' order by nombre";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getNamePrograma(Long codeUser, String groupUserName,
			Long areaUser) {
		String query = "select DISTINCT COD_PROGRAMA, NOM_PROGRAMA, DESC_PROGRAMA, OBJETIVO, POBLACION_OBJETIVO, COD_AREA, NOM_AREA, COD_USUARIO, NOM_USUARIO  from VCS_BEN_PROG_WITHOUT_USUSEDE  ";

		if ((Object) codeUser != null) {
			query += " where ('ADMINISTRADOR GENERAL' = '" + groupUserName
					+ "' OR 'SUPER USUARIO' = '" + groupUserName
					+ "' or admSubpro = " + codeUser
					+ "          or admProg = " + codeUser;
			if (groupUserName != null
					&& groupUserName.equals("ADMINISTRADOR SECRETARIA")) {
				query += " or COD_AREA = " + areaUser;
			}
			query += " ) ";
		}

		query += " order by NOM_PROGRAMA";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(query, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getNomSecretaria() {
		String strSql = "select codigo, nombre from tcs_ben_area where area_codigo is null ";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getNomSubsecretaria(String strcodsecret) {
		String strSql = " SELECT codigo, nombre " + " FROM TCS_BEN_AREA "
				+ " WHERE  area_codigo = ? ";
		String strPar[] = { strcodsecret };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getcodsecret(String strcodprog) {
		String strSql = " SELECT PRG.area_codigo area_codigo, AREA.nombre nombre"
				+ " FROM TCS_BEN_PROGRAMA PRG, TCS_BEN_AREA  AREA"
				+ " WHERE prg.area_codigo = area.codigo and prg.codigo = ? ";
		String strPar[] = { strcodprog };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getUsuAdmin(String strusu) {
		ResultSet rs = null;
		String codUsu = "%" + strusu + "%";
		String strPar[] = { codUsu, codUsu };
		String strSql = "SELECT usu.codigo codigo, usu.nombre usuario, usu.descripcion nombre\n"
				+ "FROM paoyer.tcs_usuario usu, paoyer.tcs_grupo_usuario gusu\n"
				+ "WHERE usu.gus_codigo = gusu.codigo\n"
				+ "	AND fcs_val_vigencia(usu.vigencia, usu.desde_vigencia, usu.hasta_vigencia) = 'S'\n"
				+ "	AND usu.campo_a1 IS NULL\n"
				+ "	AND (usu.nombre LIKE upper(?) OR usu.descripcion LIKE upper(?))";

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getsedes(String strsede) {
		ResultSet rs = null;
		String strSql = null;
		String strSede = "%" + strsede + "%";
		String strPar[] = { strSede };
		Validaciones validacion = new Validaciones(cf);

		try {
			if (validacion.validasede(strsede)) {
				strSql = " SELECT codigo,nombre FROM TCS_BEN_SEDE WHERE UPPER(nombre) "
						+ " LIKE UPPER(?) AND vigencia <> 'I' ";
				rs = cf.getRecordsRset(strSql, strPar, conn);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			try {
				cf.closeConnection(validacion.getConn());
			} catch (SQLException e) {
				System.err.println("/******** TDSUB - cwsub");
				e.printStackTrace();
				System.err.println("TDSUB - cwsub ********/");
			}
		}

		return rs;
	}

	public ResultSet getActivarSub() {
		String strSql = "select nombre, codigo from tcs_ben_subprograma where vigencia = 'I' ";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getMunicipios() {
		String strSql = " SELECT nombre,codigo "
				+ " FROM paoyer.TCS_VALOR_FLEXIBLE "
				+ " WHERE campo_a1 = '05' ";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public int getActivarSub2(String[] param) {
		String strSql = "update tcs_ben_subprograma "
				+ " set vigencia = 'A', comentario = '', hasta_vigencia=hasta_vigencia+TO_NUMBER(hasta_vigencia-desde_vigencia), "
				+ " USUARIO_MODIFICA = ?, FECHA_MODIFICA = to_date(?,'dd/mm/yyyy'), "
				+ " TERMINAL_MODIFICA = ? " + " where codigo = ? ";
		int modificar = 0;

		try {
			modificar = cf.execSql(strSql, param, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return modificar;
	}

	public int getActivarPro2(String[] param) {
		String strSql = "update tcs_ben_programa set vigencia = 'A' , comentario = '', "
				+ " USUARIO_MODIFICA = ?, FECHA_MODIFICA = to_date(?,'dd/mm/yyyy'), "
				+ " TERMINAL_MODIFICA = ? " + " where codigo = ? ";
		int modificar = 0;

		try {
			modificar = cf.execSql(strSql, param, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return modificar;
	}

	public ResultSet getNomsubprg(String strcodsub) {
		String strSql = "select  nombre from tcs_ben_subprograma where codigo = ? ";
		String strPar[] = { strcodsub };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getNomPrg(String strcodpro) {
		String strSql = "select  nombre from tcs_ben_programa where codigo = ? ";
		String strPar[] = { strcodpro };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getActivarProg() {
		String strSql = "select nombre, codigo from tcs_ben_programa where vigencia = 'I' ";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getActivarsub1(String strcodprog) {
		String strSql = "SELECT sub.nombre nombre, sub.codigo codigo "
				+ " FROM TCS_BEN_SUBPROGRAMA sub, TCS_BEN_PROGRAMA prog "
				+ " WHERE sub.PRG_CODIGO = prog.CODIGO AND prog.codigo = ? ";
		String strPar[] = { strcodprog };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getInfoact(String strsubprog) {
		String strSql = " SELECT  sub.PRG_CODIGO codprog,prog.NOMBRE programa, sub.nombre subprograma"
				+ " FROM TCS_BEN_SUBPROGRAMA sub, TCS_BEN_PROGRAMA prog "
				+ " WHERE prog.VIGENCIA = 'I' AND sub.PRG_CODIGO = prog.CODIGO "
				+ " AND sub.CODIGO = ? ";
		String strPar[] = { strsubprog };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public boolean valProgActivo(String strsubprg) {
		String strSql = " SELECT prog.NOMBRE programa, sub.nombre subprograma"
				+ " FROM TCS_BEN_SUBPROGRAMA sub, TCS_BEN_PROGRAMA prog "
				+ " WHERE prog.VIGENCIA = 'I' AND sub.PRG_CODIGO = prog.CODIGO "
				+ " AND sub.CODIGO = ? ";
		String strPar[] = { strsubprg };
		ResultSet rs = null;
		boolean exists = false;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
			if (rs.next()) {
				exists = true;
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return exists;
	}

	public ResultSet getInfoact2(String strsubprog) {
		String strSql = " SELECT prog.NOMBRE programa, sub.nombre subprograma "
				+ " FROM TCS_BEN_SUBPROGRAMA sub, TCS_BEN_PROGRAMA prog  "
				+ " WHERE  sub.PRG_CODIGO = prog.CODIGO "
				+ " AND sub.CODIGO = ? ";
		String strPar[] = { strsubprog };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return rs;
	}

	public String Nombre(String strCod) {
		int Codigo = Integer.parseInt(strCod.trim());
		String strSQL = "SELECT ETIQUETA FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE CODIGO="
				+ Codigo + " ";
		String NombreAtri = null;
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				NombreAtri = rs.getString("ETIQUETA");

			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return NombreAtri;
	}

	public int ObtenerCodAtriEspe(String strCod) {
		int Codigo = Integer.parseInt(strCod.trim());
		String strSQL = "SELECT CAMPO_A1 FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE CODIGO="
				+ Codigo + " ";
		int iCod = 0;
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				iCod = rs.getInt("CAMPO_A1");

			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return iCod;
	}

	public int getlistaGeneral(String strCod) {
		int Codigo = Integer.parseInt(strCod.trim());
		String strSQL = "SELECT CODIGO FROM TCS_BEN_ATR_GENERICO "
				+ "WHERE TTVF_CODIGO_DOMINIO=" + Codigo + " ";
		int iCod = 0;
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			if (rs.next())
				iCod = 1;
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return iCod;
	}

	public List getAtributoGenerico(String codsub) {
		int validar = ValidarEstudiante(codsub);
		// System.out.println(codsub);
		int subprograma = Integer.parseInt(codsub.trim());
		List listaAtri = new LinkedList();
		String strSQL = "";

		if (validar == 1) {
			strSQL = "SELECT GEN.NOMBRE ATGNOMBRE, GEN.CODIGO ATGCODIGO, GEN.ETIQUETA ATGETIQUETA "
					+ "FROM TCS_BEN_ATR_GENERICO GEN "
					+ "WHERE  "
					+ "GEN.NOMBRE NOT IN (SELECT NOMBRE FROM TCS_BEN_SUBP_ATR_BENEFICIARIO "
					+ "WHERE SBPR_CODIGO = "
					+ subprograma
					+ ") ORDER BY GEN.ORDEN";
		} else {
			strSQL = "SELECT GEN.NOMBRE ATGNOMBRE, GEN.CODIGO ATGCODIGO, GEN.ETIQUETA ATGETIQUETA "
					+ "FROM TCS_BEN_ATR_GENERICO GEN "
					+ "WHERE  "
					+ "GEN.NOMBRE NOT IN (SELECT NOMBRE FROM TCS_BEN_SUBP_ATR_BENEFICIARIO "
					+ "WHERE SBPR_CODIGO = "
					+ subprograma
					+ ") "
					+ "AND (CAMPO_A2 IS NULL or CAMPO_A2 = 'S')  "
					+ "ORDER BY GEN.ORDEN";
		}

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				Atributo a = new Atributo();
				a.setCodigo(rs.getString("ATGCODIGO"));
				a.setNombre(rs.getString("ATGNOMBRE"));
				a.setEtiqueta(rs.getString("ATGETIQUETA"));
				listaAtri.add(a);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return listaAtri;
	}

	/**
	 * Metodo DEPRECADO ya no se usa para validar contra matricula en linea,
	 * siempre retorna 0.
	 * 
	 * @param codsubpro
	 * @return
	 */
	public int ValidarEstudiante(String codsubpro) {
		// int retorno = 0;
		// int subprograma = Integer.parseInt(codsubpro.trim());
		// String strSQL =
		// "SELECT NOMBRE FROM TCS_BEN_SUBPROGRAMA WHERE CODIGO=" + subprograma
		// + " " + "AND VALIDAR_CONTRA_ESTUD='S'";
		//
		// ResultSet rs = null;
		// try {
		// rs = cf.getRecordsRset(strSQL, null, conn);
		// if (rs.next()) {
		// retorno = 1;
		// }
		// } catch (SQLException e) {
		// System.err.println("/******** TDSUB - cwsub");
		// e.printStackTrace();
		// System.err.println("TDSSPE - cwsub ********/");
		// } finally {
		// if (rs != null) {
		// try { rs.close(); } catch (SQLException e) {
		// System.err.println("/******** TDSUB - cwsub");
		// e.printStackTrace();
		// System.err.println("TDSSPE - cwsub ********/");
		// }
		// }
		// }

		return 0;
	}

	public List getAtributoEspecificos(String strSubprograma)
			throws SQLException {
		int sub = Integer.parseInt(strSubprograma.trim());
		List listaAtriEsp = new LinkedList();
		String strSQL = "SELECT CODIGO, TIPO_ATRIBUTO, NOMBRE, nvl(REST_CODIGO,'0') REST_CODIGO, ORDEN, LONGITUD, "
				+ "OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, VIGENCIA, "
				+ "DESCRIPCION, TIPO_DATO, TTVF_CODIGO_DOMINIO "
				+ "FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE SBPR_CODIGO="
				+ sub
				+ " " + "ORDER BY ORDEN";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				Atributo a1 = new Atributo();
				int res = rs.getInt("TTVF_CODIGO_DOMINIO");
				if (res != 0) {
					a1.setTipovalorflex(rs.getString("TTVF_CODIGO_DOMINIO"));
				} else {
					a1.setTipovalorflex("");
				}

				a1.setCodigo(rs.getString("CODIGO"));
				a1.setNombre(rs.getString("NOMBRE"));
				a1.setEtiqueta(rs.getString("ETIQUETA"));
				a1.setOrden(rs.getString("ORDEN"));
				a1.setRestriccion(rs.getString("REST_CODIGO"));
				a1.setValLista(rs.getString("VALIDAR_LISTA"));
				if (a1.getValLista().equals("S")) {
					a1.setValListaDesc("Si");
				} else {
					a1.setValListaDesc("No");
				}
				a1.setLongitud(rs.getString("LONGITUD"));

				a1.setObligatorio(rs.getString("OBLIGATORIO"));
				if (a1.getObligatorio().equals("S")) {
					a1.setObligarioDesc("Si");
				} else {
					a1.setObligarioDesc("No");
				}

				a1.setTipoatributo(rs.getString("TIPO_ATRIBUTO"));
				if (a1.getTipoatributo().equals("R")) {
					a1.setTipoatributoDesc("Beneficiario");
				} else {
					a1.setTipoatributoDesc("Beneficio");
				}

				a1.setValorsugerido(rs.getString("VALOR_SUGERIDO"));
				a1.setVigencia(rs.getString("VIGENCIA"));
				if (a1.getVigencia().equals("A")) {
					a1.setVigenciaDesc("Activo");
				} else {
					a1.setVigenciaDesc("Inactivo");
				}

				a1.setTipodato(rs.getString("TIPO_DATO"));
				if (a1.getTipodato().equals("A")) {
					a1.setTipodatoDesc("Alfanumerico");
				} else {
					if (a1.getTipodato().equals("F")) {
						a1.setTipodatoDesc("Fecha");
					} else {
						if (a1.getTipodato().equals("N")) {
							a1.setTipodatoDesc("Numerico");
						} else {
							a1.setTipodatoDesc("Solo Letras (A-Z)");
						}
					}

				}
				a1.setDescripcion(rs.getString("DESCRIPCION"));

				listaAtriEsp.add(a1);
			}
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return listaAtriEsp;
	}

	public List getAtributoEspecificos(String strSubprograma, int opcion) {
		int sub = Integer.parseInt(strSubprograma.trim());
		String strSQL;
		List listaAtriEsp = new LinkedList();

		if (opcion != 1) {
			strSQL = "SELECT CODIGO, TIPO_ATRIBUTO, NOMBRE, nvl(REST_CODIGO,'0') REST_CODIGO, ORDEN, LONGITUD, "
					+ "OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, VIGENCIA, "
					+ "DESCRIPCION, TIPO_DATO, TTVF_CODIGO_DOMINIO "
					+ "FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE CODIGO="
					+ sub
					+ " ";
		} else {
			strSQL = "SELECT CODIGO, TIPO_ATRIBUTO, NOMBRE, nvl(REST_CODIGO,'0') REST_CODIGO, ORDEN, LONGITUD, "
					+ "OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, VIGENCIA, "
					+ "DESCRIPCION, TIPO_DATO, TTVF_CODIGO_DOMINIO "
					+ "FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE SBPR_CODIGO="
					+ sub + " " + "AND VIGENCIA = 'A' ORDER BY ORDEN";
		}

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {

				Atributo a1 = new Atributo();
				int res = rs.getInt("TTVF_CODIGO_DOMINIO");
				if (res != 0) {
					a1.setTipovalorflex(rs.getString("TTVF_CODIGO_DOMINIO"));
				} else {
					a1.setTipovalorflex("");
				}

				a1.setCodigo(rs.getString("CODIGO"));
				a1.setNombre(rs.getString("NOMBRE"));
				a1.setEtiqueta(rs.getString("ETIQUETA"));
				a1.setOrden(rs.getString("ORDEN"));
				a1.setRestriccion(rs.getString("REST_CODIGO"));
				a1.setValLista(rs.getString("VALIDAR_LISTA"));
				if (a1.getValLista().equals("S")) {
					a1.setValListaDesc("Si");
				} else {
					a1.setValListaDesc("No");
				}
				a1.setLongitud(rs.getString("LONGITUD"));

				a1.setObligatorio(rs.getString("OBLIGATORIO"));
				if (a1.getObligatorio().equals("S")) {
					a1.setObligarioDesc("Si");
				} else {
					a1.setObligarioDesc("No");
				}

				a1.setTipoatributo(rs.getString("TIPO_ATRIBUTO"));
				if (a1.getTipoatributo().equals("R")) {
					a1.setTipoatributoDesc("Beneficiario");
				} else {
					a1.setTipoatributoDesc("Beneficio");
				}

				a1.setValorsugerido(rs.getString("VALOR_SUGERIDO"));
				a1.setVigencia(rs.getString("VIGENCIA"));
				if (a1.getVigencia().equals("A")) {
					a1.setVigenciaDesc("Activo");
				} else {
					a1.setVigenciaDesc("Inactivo");
				}

				a1.setTipodato(rs.getString("TIPO_DATO"));
				if (a1.getTipodato().equals("A")) {
					a1.setTipodatoDesc("Alfanumerico");
				} else {
					if (a1.getTipodato().equals("F")) {
						a1.setTipodatoDesc("Fecha");
					} else {
						if (a1.getTipodato().equals("N")) {
							a1.setTipodatoDesc("Numérico");
						} else {
							a1.setTipodatoDesc("Solo Letras (A-Z)");
						}
					}

				}
				a1.setDescripcion(rs.getString("DESCRIPCION"));

				listaAtriEsp.add(a1);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return listaAtriEsp;
	}

	public List getSubprogramas() {
		List listaSubpro = new LinkedList();
		String strSQL = "SELECT CODIGO, PRG_CODIGO, NOMBRE, VFL_CODIGO_CATEGORIA, "
				+ "DESCRIPCION, DIAS_REUTILIZAR, GRUPO_FAMILIAR, VALIDAR_CONTRA_ESTUD, "
				+ "VALIDAR_CONTRA_SISBEN, DIRECCION_BEN_OBLIGATORIA, "
				+ "nvl(VALOR_UNITARIO_BENEFICIO,0) VALOR_UNITARIO_BENEFICIO, DESDE_VIGENCIA, HASTA_VIGENCIA, "
				+ "VIGENCIA FROM TCS_BEN_SUBPROGRAMA";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				Subprograma sub = new Subprograma();
				sub.setCodigo(rs.getString("CODIGO"));
				sub.setPrgcodigo(rs.getString("PRG_CODIGO"));
				sub.setNombre(rs.getString("NOMBRE"));
				sub.setVflcodigocategsub(rs.getString("VFL_CODIGO_CATEGORIA"));
				sub.setDescripcion(rs.getString("DESCRIPCION"));
				sub.setDiasreutilizar(rs.getString("DIAS_REUTILIZAR"));
				sub.setGrupofamiliar(rs.getString("GRUPO_FAMILIAR"));
				sub.setValidarestudiante(rs.getString("VALIDAR_CONTRA_ESTUD"));
				sub.setValidarsisben(rs.getString("VALIDAR_CONTRA_SISBEN"));
				sub.setDireccionbenoblig(rs
						.getString("DIRECCION_BEN_OBLIGATORIA"));
				sub.setValorunitario(rs.getString("VALOR_UNITARIO_BENEFICIO"));
				sub.setDesde(rs.getString("DESDE_VIGENCIA"));
				sub.setHasta(rs.getString("HASTA_VIGENCIA"));
				sub.setVigencia(rs.getString("VIGENCIA"));

				listaSubpro.add(sub);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return listaSubpro;
	}

	public List getDominio(String tipovfl) {
		int dominio = Integer.parseInt(tipovfl.trim());
		List listaDominio = new LinkedList();

		String strSQL = "SELECT TCS_VALOR_FLEXIBLE.CODIGO CODIGOVFL, TCS_TIPO_VALOR_FLEX.CODIGO TVFCOD, "
				+ "TCS_TIPO_VALOR_FLEX.DESCRIPCION TVFDES, TCS_TIPO_VALOR_FLEX.VIGENCIA TVFVIG, "
				+ "TCS_VALOR_FLEXIBLE.DESCRIPCION VFDES, TCS_VALOR_FLEXIBLE.TVF_CODIGO VFTVFCOD, "
				+ " TCS_VALOR_FLEXIBLE.CODIGO_VALOR CODIGO_VALOR "
				+ "FROM paoyer.TCS_TIPO_VALOR_FLEX, paoyer.TCS_VALOR_FLEXIBLE "
				+ "WHERE TCS_TIPO_VALOR_FLEX.CODIGO="
				+ dominio
				+ " AND "
				+ "TCS_VALOR_FLEXIBLE.TVF_CODIGO="
				+ dominio
				+ " "
				+ "AND TCS_VALOR_FLEXIBLE.VIGENCIA='S' "
				+ "ORDER BY CODIGO_VALOR ";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {

				ValorFlexibleVO valorfl = new ValorFlexibleVO();

				valorfl.setCodigotvfl(rs.getString("TVFCOD"));
				valorfl.settVFCodigo(rs.getString("VFTVFCOD"));
				valorfl.setDescripciontvfl(rs.getString("TVFDES"));
				valorfl.setDescripcionvf(rs.getString("VFDES"));
				valorfl.setVigenciatvfl(rs.getString("TVFVIG"));
				valorfl.setCodigovfl(rs.getString("CODIGOVFL"));
				valorfl.setCodigoValor(rs.getString("CODIGO_VALOR"));
				listaDominio.add(valorfl);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return listaDominio;
	}

	public List getDominioByCritera(String tipovfl, String nombre) {
		int dominio = Integer.parseInt(tipovfl.trim());
		List listaDominio = new LinkedList();

		String strSQL = "SELECT TCS_VALOR_FLEXIBLE.CODIGO CODIGOVFL, TCS_TIPO_VALOR_FLEX.CODIGO TVFCOD, "
				+ "TCS_TIPO_VALOR_FLEX.DESCRIPCION TVFDES, TCS_TIPO_VALOR_FLEX.VIGENCIA TVFVIG, "
				+ "TCS_VALOR_FLEXIBLE.DESCRIPCION VFDES, TCS_VALOR_FLEXIBLE.TVF_CODIGO VFTVFCOD, "
				+ "TCS_VALOR_FLEXIBLE.CODIGO_VALOR CODIGO_VALOR "
				+ "FROM paoyer.TCS_TIPO_VALOR_FLEX, paoyer.TCS_VALOR_FLEXIBLE "
				+ "WHERE TCS_TIPO_VALOR_FLEX.CODIGO="
				+ dominio
				+ " AND "
				+ "TCS_VALOR_FLEXIBLE.TVF_CODIGO="
				+ dominio
				+ " "
				+ "AND TCS_VALOR_FLEXIBLE.VIGENCIA='S' "
				+ "AND TCS_VALOR_FLEXIBLE.DESCRIPCION LIKE '%"
				+ nombre
				+ "%' "
				+ "ORDER BY CODIGOVFL";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				ValorFlexibleVO valorfl = new ValorFlexibleVO();

				valorfl.setCodigotvfl(rs.getString("TVFCOD"));
				valorfl.settVFCodigo(rs.getString("VFTVFCOD"));
				valorfl.setDescripciontvfl(rs.getString("TVFDES"));
				valorfl.setDescripcionvf(rs.getString("VFDES"));
				valorfl.setVigenciatvfl(rs.getString("TVFVIG"));
				valorfl.setCodigovfl(rs.getString("CODIGOVFL"));
				valorfl.setCodigoValor(rs.getString("CODIGO_VALOR"));
				listaDominio.add(valorfl);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return listaDominio;
	}

	public List GetTvflAtri(String codigo) {
		int iCodatri = Integer.parseInt(codigo.trim());
		List lista = new LinkedList();
		String strSQL = "SELECT TTVF_CODIGO_DOMINIO, CAMPO_A1 FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE CODIGO="
				+ iCodatri + " ";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				lista.add(rs.getString("TTVF_CODIGO_DOMINIO"));
				lista.add(rs.getString("CAMPO_A1"));
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return lista;
	}

	public List getAtriValidarLista(List lNombre, String strSubprograma) {
		int sub = Integer.parseInt(strSubprograma.trim());
		int iTam = lNombre.size();

		List lDominio = new LinkedList();

		String Parte1 = "IN(";
		String Parte2 = "";
		for (int i = 0; i < iTam; i++) {
			String b = (String) lNombre.get(i);
			if (i < iTam - 1) {
				Parte2 = Parte2 + "upper('" + b + "'),";
			} else {
				Parte2 = Parte2 + "upper('" + b + "'))";
			}

		}
		Parte1 = Parte1 + Parte2;

		String strSQL = "SELECT CODIGO, ETIQUETA, VALIDAR_LISTA FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE SBPR_CODIGO="
				+ sub
				+ " "
				+ " AND NOMBRE "
				+ Parte1
				+ " AND VALIDAR_LISTA='S' ";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {

				Atributo a1 = new Atributo();
				a1.setCodigo(rs.getString("CODIGO"));
				a1.setEtiqueta(rs.getString("ETIQUETA"));
				a1.setValLista(rs.getString("VALIDAR_LISTA"));
				lDominio.add(a1);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return lDominio;
	}

	public List getError(List lError, String strSubprograma) {
		int sub = Integer.parseInt(strSubprograma.trim());
		int iTam = lError.size();

		List lErrores = new LinkedList();

		String Parte1 = "IN(";
		String Parte2 = "";
		for (int i = 0; i < iTam; i++) {
			String b = (String) lError.get(i);
			if (i < iTam - 1) {
				Parte2 = Parte2 + "'" + b + "',";
			} else {
				Parte2 = Parte2 + "'" + b + "')";
			}

		}
		Parte1 = Parte1 + Parte2;

		String strSQL = "SELECT CODIGO, ETIQUETA, VALIDAR_LISTA, ORDEN FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE SBPR_CODIGO="
				+ sub + " " + " AND NOMBRE " + Parte1 + " ";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {

				Atributo a1 = new Atributo();
				a1.setCodigo(rs.getString("CODIGO"));
				a1.setEtiqueta(rs.getString("ETIQUETA"));
				a1.setValLista(rs.getString("VALIDAR_LISTA"));
				a1.setOrden(rs.getString("ORDEN"));
				lErrores.add(a1);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return lErrores;
	}

	public List getAtriValidarLista2(List lNombre, String strSubprograma) {
		int sub = Integer.parseInt(strSubprograma.trim());
		int iTam = lNombre.size();

		List lDominio = new LinkedList();

		String Parte1 = "IN(";
		String Parte2 = "";
		for (int i = 0; i < iTam; i++) {
			String b = (String) lNombre.get(i);
			if (i < iTam - 1) {
				Parte2 = Parte2 + "'" + b + "',";
			} else {
				Parte2 = Parte2 + "'" + b + "')";
			}

		}
		Parte1 = Parte1 + Parte2;

		String strSQL = "SELECT CODIGO, ETIQUETA, VALIDAR_LISTA FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE SBPR_CODIGO="
				+ sub
				+ " "
				+ " AND VALIDAR_LISTA='S' AND TTVF_CODIGO_DOMINIO IS NULL";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {

				Atributo a1 = new Atributo();
				a1.setCodigo(rs.getString("CODIGO"));
				a1.setEtiqueta(rs.getString("ETIQUETA"));
				a1.setValLista(rs.getString("VALIDAR_LISTA"));

				lDominio.add(a1);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return lDominio;
	}

	public int InsertAtributo(String[] strArr, String strSubprograma) {
		int sub = Integer.parseInt(strSubprograma.trim());
		String strSql = "INSERT INTO TCS_BEN_SUBP_ATR_BENEFICIARIO (CODIGO, SBPR_CODIGO, "
				+ "TIPO_ATRIBUTO, NOMBRE, DESCRIPCION, ORDEN, TIPO_DATO, LONGITUD, "
				+ "OBLIGATORIO, ETIQUETA, VALIDAR_LISTA, VIGENCIA, "
				+ "usuario_crea, fecha_crea, terminal_crea, usuario_modifica, fecha_modifica, terminal_modifica) "
				+ " VALUES(SCS_BEN_SAB.NEXTVAL,"
				+ sub
				+ ",?,upper(?),upper(?),?,?,?,?,upper(?),?,'A',?,to_date(?,'dd/mm/yyyy'),?,?,to_date(?,'dd/mm/yyyy'),?)";
		int bInsertoCorrectamente = 0;

		try {
			bInsertoCorrectamente = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public int InsertAtributo2(String[] strArrAG, String strSubprograma) {
		int sub = Integer.parseInt(strSubprograma.trim());
		String strSql = "INSERT INTO TCS_BEN_SUBP_ATR_BENEFICIARIO (CODIGO, SBPR_CODIGO, TIPO_ATRIBUTO, "
				+ "NOMBRE, ORDEN, LONGITUD, OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, "
				+ "VIGENCIA, TTVF_CODIGO_DOMINIO, DESCRIPCION, TIPO_DATO, CAMPO_A2, "
				+ "usuario_crea, fecha_crea, terminal_crea, usuario_modifica, fecha_modifica, terminal_modifica) "
				+ " VALUES ( SCS_BEN_SAB.NEXTVAL,"
				+ sub
				+ ",?,upper(?),?,?,?,upper(?),?,?,?,?,upper(?),?,?,?,to_date(?,'dd/mm/yyyy'),?,?,to_date(?,'dd/mm/yyyy'),?)";
		int bInsertoBien = 0;

		try {
			bInsertoBien = cf.execSql(strSql, strArrAG, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return bInsertoBien;
	}

	public int InsertAtributoGenerico(String strCodigo, String strSubprograma,
			String[] strArr2) {
		int bInsertoBien = 0;
		String strSql = "SELECT TIPO_ATRIBUTO, NOMBRE, DESCRIPCION, ORDEN, TIPO_DATO, "
				+ "LONGITUD, OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, "
				+ "VALIDAR_LISTA, VIGENCIA, TTVF_CODIGO_DOMINIO, CAMPO_A2 "
				+ "FROM TCS_BEN_ATR_GENERICO WHERE CODIGO=" + strCodigo + " ";
		String strTipoAtributo;
		String strNombre;
		String strOrden;
		String strLongitud;
		String strObligatorio;
		String strEtiqueta;
		String strValidarLista;
		String strDescripcion;
		String strTipoDato;
		String strValorSugerido;
		String strVigencia;
		String strTVflCodigo;
		String strCampoA2;

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				strTipoAtributo = rs.getString("TIPO_ATRIBUTO");
				strNombre = rs.getString("NOMBRE");
				strOrden = rs.getString("ORDEN");
				strLongitud = rs.getString("LONGITUD");
				strObligatorio = rs.getString("OBLIGATORIO");
				strEtiqueta = rs.getString("ETIQUETA");
				strValidarLista = rs.getString("VALIDAR_LISTA");
				strDescripcion = rs.getString("DESCRIPCION");
				strTipoDato = rs.getString("TIPO_DATO");
				strValorSugerido = rs.getString("VALOR_SUGERIDO");
				strVigencia = rs.getString("VIGENCIA");
				strTVflCodigo = rs.getString("TTVF_CODIGO_DOMINIO");
				strCampoA2 = rs.getString("CAMPO_A2");

				String strArrAG[] = { strTipoAtributo, strNombre, strOrden,
						strLongitud, strObligatorio, strEtiqueta,
						strValorSugerido, strValidarLista, strVigencia,
						strTVflCodigo, strDescripcion, strTipoDato, strCampoA2,
						strArr2[0], strArr2[1], strArr2[2], strArr2[3],
						strArr2[4], strArr2[5] };

				bInsertoBien = InsertAtributo2(strArrAG, strSubprograma);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return bInsertoBien;
	}

	public int InsertTipoVFL(String[] strArr) {
		String strSql = "INSERT INTO paoyer.TCS_TIPO_VALOR_FLEX (CODIGO, NOMBRE, "
				+ "DESCRIPCION, VIGENCIA,CODIGO_VALOR_AUT, APL_CODIGO, "
				+ "usuario_crea, fecha_crea, terminal_crea, usuario_modifica, fecha_modifica, terminal_modifica) "
				+ " VALUES(paoyer.SCS_TIPO_VALOR_FLEX.NEXTVAL,upper(?),upper(?),?,'S',20,?,to_date(?,'dd/mm/yyyy'),?,?,to_date(?,'dd/mm/yyyy'),?)";
		int bInsertoCorrectamente = 0;
		try {
			bInsertoCorrectamente = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public int InsertAtributoGene(String[] strArr) {
		String strSql = "INSERT INTO TCS_BEN_ATR_GENERICO(CODIGO, TIPO_ATRIBUTO, "
				+ "NOMBRE, DESCRIPCION,ORDEN, TIPO_DATO, LONGITUD, OBLIGATORIO, "
				+ "ETIQUETA, VALIDAR_LISTA, VIGENCIA, "
				+ "usuario_crea, fecha_crea, terminal_crea, usuario_modifica, fecha_modifica, terminal_modifica) "
				+ "VALUES(SCS_BEN_ATGE.NEXTVAL,?,upper(?),upper(?),?,?,?,?,upper(?),?,'A',?,to_date(?,'dd/mm/yyyy'),?,?,to_date(?,'dd/mm/yyyy'),?)";
		int bInsertoCorrectamente = 0;
		try {
			bInsertoCorrectamente = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public int InsertValorVFL(String[] strArr, int codigo) {
		String strSql = " INSERT INTO paoyer.TCS_VALOR_FLEXIBLE (CODIGO, NOMBRE, DESCRIPCION, VIGENCIA, TVF_CODIGO, "
				+ " usuario_crea, fecha_crea, terminal_crea, usuario_modifica, fecha_modifica, terminal_modifica, CODIGO_VALOR) "
				+ " VALUES(paoyer.SCS_VALOR_FLEXIBLE.NEXTVAL,upper(?),upper(?),'S',"
				+ codigo
				+ ",?,to_date(?,'dd/mm/yyyy'),?,?,to_date(?,'dd/mm/yyyy'),?,?)";
		int bInsertoCorrectamente = 0;
		try {
			bInsertoCorrectamente = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public int getCodigoTipoVFL() {
		int codigo = 0;
		String strSql = " SELECT MAX(CODIGO) CODIGO FROM paoyer.TCS_TIPO_VALOR_FLEX";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				codigo = rs.getInt("CODIGO");
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return codigo;
	}

	public int getOrdenAtriGene() {
		int codigo = 0;
		String strSql = " SELECT MAX(ORDEN) ORDEN FROM TCS_BEN_ATR_GENERICO";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				codigo = rs.getInt("ORDEN") + 5;
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return codigo;
	}

	public List CodMaxAtriGene() {

		List codigo = new LinkedList();
		String strSql = " SELECT MAX(SAB.CODIGO) CODIGOATE, MAX(ATG.CODIGO) CODIGOATG "
				+ "FROM TCS_BEN_ATR_GENERICO ATG, TCS_BEN_SUBP_ATR_BENEFICIARIO SAB";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				codigo.add(rs.getString("CODIGOATE"));
				codigo.add(rs.getString("CODIGOATG"));
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return codigo;
	}

	public int getOrden(String Orden, String Subprograma, String vigencia) {
		int iOrden = Integer.parseInt(Orden.trim());
		int iSubpro = Integer.parseInt(Subprograma.trim());
		int opcion = 0;
		String strSql = " SELECT CODIGO FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE ORDEN="
				+ iOrden
				+ " "
				+ " AND SBPR_CODIGO="
				+ iSubpro
				+ " AND VIGENCIA = '" + vigencia + "'";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				opcion = rs.getInt("CODIGO");

			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return opcion;
	}

	public int getOrden(String Orden, String Subprograma) {
		int iOrden = Integer.parseInt(Orden.trim());
		int iSubpro = Integer.parseInt(Subprograma.trim());
		int opcion = 0;
		String strSql = " SELECT CODIGO FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE ORDEN="
				+ iOrden + " AND SBPR_CODIGO=" + iSubpro + " ";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				opcion = rs.getInt("CODIGO");
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return opcion;

	}

	public int getNombre(String Nombre, String Subprograma, String vigencia) {
		int iSubpro = Integer.parseInt(Subprograma.trim());
		int opcion = 0;
		String strSql = " SELECT NOMBRE FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE NOMBRE='"
				+ Nombre
				+ "' "
				+ " AND SBPR_CODIGO="
				+ iSubpro
				+ " AND VIGENCIA = '" + vigencia + "'";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				opcion = 1;
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return opcion;
	}

	public int getNombre(String Nombre, String Subprograma) {
		int iSubpro = Integer.parseInt(Subprograma.trim());
		int opcion = 0;
		String strSql = " SELECT NOMBRE FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE NOMBRE='"
				+ Nombre + "' AND SBPR_CODIGO=" + iSubpro + " ";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				opcion = 1;
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return opcion;
	}

	public int getOrden2(String Orden, String Subprograma, String CodAtributo) {
		int iOrden = Integer.parseInt(Orden.trim());
		int iSubpro = Integer.parseInt(Subprograma.trim());
		int iCodatri = Integer.parseInt(CodAtributo.trim());
		int opcion = 0;
		String strSql = " SELECT CODIGO FROM TCS_BEN_SUBP_ATR_BENEFICIARIO "
				+ "WHERE ORDEN=" + iOrden + " AND SBPR_CODIGO=" + iSubpro + " "
				+ "AND CODIGO!=" + iCodatri + " ";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				opcion = rs.getInt("CODIGO");
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return opcion;
	}

	public int ActualizarValidarSisben(String strCodigoSubpro) {
		int actualizo = 0;
		int codsub = Integer.parseInt(strCodigoSubpro.trim());
		String strSql = " UPDATE TCS_BEN_SUBPROGRAMA SET VALIDAR_CONTRA_SISBEN='S' WHERE CODIGO="
				+ codsub + " ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarValidarMatricula(String strCodigoSubpro) {
		int actualizo = 0;
		int codsub = Integer.parseInt(strCodigoSubpro.trim());
		String strSql = " UPDATE TCS_BEN_SUBPROGRAMA SET VALIDAR_CONTRA_ESTUD='S' WHERE CODIGO="
				+ codsub + " ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarAtributo(String strCodigoAtri, int iCodigo,
			String[] strArrAct) {
		int actualizo = 0;
		int codatri = Integer.parseInt(strCodigoAtri.trim());
		String strSql = " UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET "
				+ "TTVF_CODIGO_DOMINIO=" + iCodigo + ", "
				+ "usuario_modifica = ?, "
				+ "fecha_modifica = to_date(?,'dd/mm/yyyy'), "
				+ "terminal_modifica = ? " + "WHERE CODIGO=" + codatri + " ";

		try {
			actualizo = cf.execSql(strSql, strArrAct, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarAtributoGene(int iCodigoAtri, int iCodigo,
			String[] strArrAct) {
		int actualizo = 0;
		String strSql = "UPDATE TCS_BEN_ATR_GENERICO SET "
				+ "TTVF_CODIGO_DOMINIO=" + iCodigo + ", "
				+ "usuario_modifica = ?,"
				+ "fecha_modifica = to_date(?,'dd/mm/yyyy'), "
				+ "terminal_modifica = ? " + "WHERE CODIGO=" + iCodigoAtri
				+ " ";
		try {
			actualizo = cf.execSql(strSql, strArrAct, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarAtriCampouno(String strCodigoAtri, int iCodigo) {
		int actualizo = 0;
		int codatri = Integer.parseInt(strCodigoAtri.trim());
		String strSql = " UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET TTVF_CODIGO_DOMINIO="
				+ iCodigo + " WHERE CODIGO=" + codatri + " ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarCampoUno(int iCodAtriEsp, int iCodAtriGene) {
		int actualizo = 0;
		String strSql = " UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET CAMPO_A1="
				+ iCodAtriGene + " WHERE CODIGO=" + iCodAtriEsp + " ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int ActulizarValorSug(String strCodigoAtri, String strCodigoVFL,
			String[] strArrAct) {
		int actualizo = 0;
		int codatri = Integer.parseInt(strCodigoAtri.trim());
		String strSql = "UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET "
				+ "VALOR_SUGERIDO=" + strCodigoVFL + ", "
				+ "usuario_modifica = ?,"
				+ "fecha_modifica = to_date(?,'dd/mm/yyyy'), "
				+ "terminal_modifica = ? " + "WHERE CODIGO=" + codatri + " ";

		try {
			actualizo = cf.execSql(strSql, strArrAct, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int ActulizarValorSugGene(int CodigoAtriGe, String strCodigoVFL) {
		int actualizo = 0;
		String strSql = "UPDATE TCS_BEN_ATR_GENERICO SET " + "VALOR_SUGERIDO="
				+ strCodigoVFL + " WHERE CODIGO=" + CodigoAtriGe + " ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int EliminarAtri(String strCodigoAtri, String[] strArrAct) {
		int actualizo = 0;
		int codatri = Integer.parseInt(strCodigoAtri.trim());
		String strSql = "UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET "
				+ "VIGENCIA = 'I', " + "usuario_modifica = ?,"
				+ "fecha_modifica = to_date(?,'dd/mm/yyyy'), "
				+ "terminal_modifica = ? " + "WHERE CODIGO=" + codatri + " ";

		try {
			actualizo = cf.execSql(strSql, strArrAct, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int ModificarAtriSub(Atributo Atri, String[] strArrAct) {
		int actualizo = 0;
		String strSql = "UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET "
				+ "NOMBRE = upper(?), " + "ORDEN = ?, " + "LONGITUD = ?, "
				+ "OBLIGATORIO = ?, " + "ETIQUETA = upper(?), "
				+ "VALOR_SUGERIDO = ?, " + "VALIDAR_LISTA = ?, "
				+ "VIGENCIA = ?, " + "DESCRIPCION = upper(?), "
				+ "usuario_modifica = ?,"
				+ "fecha_modifica = to_date(?,'dd/mm/yyyy'), "
				+ "terminal_modifica = ? " + "WHERE CODIGO = "
				+ Atri.getCodatributo();
		String parArr[] = { Atri.getNombre(), Atri.getOrden(),
				Atri.getLongitud(), Atri.getObligatorio(), Atri.getEtiqueta(),
				Atri.getValorsugerido(), Atri.getValLista(),
				Atri.getVigencia(), Atri.getDescripcion(), strArrAct[0],
				strArrAct[1], strArrAct[2] };

		CallableStatement cs = null;
		try {
			actualizo = cf.execSql(strSql, parArr, conn);
			strSql = "{call PCS_CHANGE_DATA_TYPE('" + Atri.getTipodato() + "',"
					+ Atri.getCodatributo() + ", ?)}";
			cs = conn.prepareCall(strSql);
			cs.registerOutParameter(1, Types.INTEGER);
			cs.execute();

			if (cs.getInt(1) != 1) {
				actualizo = -1;
			}

			strSql = "{call PCS_CHANGE_ATRIBUTE_TYPE('"
					+ Atri.getTipoatributo() + "'," + Atri.getCodatributo()
					+ ",'" + strArrAct[0] + "','" + strArrAct[2] + "', ?)}";
			cs = conn.prepareCall(strSql);
			cs.registerOutParameter(1, Types.INTEGER);
			cs.execute();

			if (cs.getInt(1) != 1) {
			} else {
				actualizo = -2;
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		} finally {
			if (cs != null) {
				try {
					cs.close();
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}

		return actualizo;
	}

	public int ActualizarTvfDominio(String Atri) {
		int actualizo = 0;
		int codatri = Integer.parseInt(Atri.trim());
		String strSql = "UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET "
				+ "TTVF_CODIGO_DOMINIO='', " + "VALOR_SUGERIDO='', "
				+ "CAMPO_A1='' " + "WHERE CODIGO = " + codatri + " ";

		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarTvfDominioGene(String Atri) {
		int actualizo = 0;
		int codatri = Integer.parseInt(Atri.trim());
		String strSql = "UPDATE TCS_BEN_ATR_GENERICO SET "
				+ "TTVF_CODIGO_DOMINIO = '', " + "VALOR_SUGERIDO= '' "
				+ "WHERE CODIGO = " + codatri + " ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarDominio(String[] strArr, String Codigo) {
		int actualizo = 0;
		int codtvfl = Integer.parseInt(Codigo.trim());
		String strSql = "UPDATE paoyer.TCS_TIPO_VALOR_FLEX SET "
				+ "NOMBRE = upper(?), " + "DESCRIPCION = upper(?), "
				+ "VIGENCIA = ?, " + "usuario_modifica = ?,"
				+ "fecha_modifica = to_date(?,'dd/mm/yyyy'), "
				+ "TERMINAL_MODIFICA = ? " + "WHERE CODIGO=" + codtvfl + " ";

		try {
			actualizo = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarValorFlexible(String[] strArr, String Codigo) {
		int actualizo = 0;
		int codvfl = Integer.parseInt(Codigo.trim());
		String strSql = "UPDATE paoyer.TCS_VALOR_FLEXIBLE SET "
				+ "NOMBRE = upper(?), " + "DESCRIPCION = upper(?), "
				+ "VIGENCIA = ?, " + "usuario_modifica = ?,"
				+ "fecha_modifica = to_date(?,'dd/mm/yyyy'), "
				+ "terminal_modifica = ?," + "codigo_valor = ? "
				+ "WHERE CODIGO=" + codvfl + " ";

		try {
			actualizo = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int EliminarVFL(String Codigo) {
		int actualizo = 0;
		int codvfl = Integer.parseInt(Codigo.trim());
		String strSql = "UPDATE paoyer.TCS_VALOR_FLEXIBLE SET "
				+ "VIGENCIA='N' WHERE CODIGO=" + codvfl + " ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return actualizo;
	}

	public int EliminarVFLTotal(String Codigo) {
		int bInsertoCorrectamente = 0;
		int codtvfl = Integer.parseInt(Codigo.trim());
		String strSql = "UPDATE paoyer.TCS_VALOR_FLEXIBLE SET "
				+ "VIGENCIA='N' WHERE TVF_CODIGO=" + codtvfl + " ";

		try {
			bInsertoCorrectamente = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public int EliminarTVFLTotal(String Codigo) {
		int bInsertoCorrectamente = 0;
		int codtvfl = Integer.parseInt(Codigo.trim());
		String strSql = "DELETE FROM paoyer.TCS_TIPO_VALOR_FLEX WHERE CODIGO="
				+ codtvfl + " ";
		try {
			bInsertoCorrectamente = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public Connection getConn() {
		return conn;
	}
}
